#ifndef _SHELL_H_
#define _SHELL_H_

#include "types.h"
#include "err.h"

#define CLI_SYSTEM_CMDS_MAX 3

typedef enum
{
    CLI_CLIENT_SYSTEM,
    CLI_CLIENT_PROFILER,
    CLI_CLIENT_MAX
}cli_clients_t;

/*
* Table of clients
*/
typedef struct
{
    uint8_t cli_name[64];  // command to invoke the client CLI
    err_t (*cli_func)(uint8_t *command, bool *exited);  // process comand
    uint8_t * (*cli_mode)(void);  // function to print cli-mode on prompt
}client_info_t;

typedef struct
{
    uint8_t command[64];
    void (*action)(uint8_t *command);
}cmd_table_t;


void invoke_help(uint8_t *command);
void do_reset(uint8_t *command);
void spi_flash_dump(uint8_t *command);

void shell(void);
#endif
